Estimating the likely performance of a system is an important part of the design process. A variety of performance estimation tools are available for system designers of application specific integrated circuits (ASICs). Similarly, a variety of different performance estimation tools are available for developing purely software-based systems.
Whether hardware-based or software based, the approach taken by most performance estimation tools is to add monitor functionality to existing systems. This approach necessarily infers that the complete design for which performance estimation is desired, whether hardware or software, is fully realized. The necessity of having a fully realized design makes many performance estimation tools unusable in the early stages of system design when many architectural decisions are made.